#ifndef	__AABBOX_H__
#define	__AABBOX_H__

#include "BasicType/BasicType.h"

namespace GCRE {
	namespace SceneModel {

		/***********************************************************************
		*                             Axis Aligned Bounding Box                                   *
		*                    Representation By Center and Radius                            *
		*                              Min = Center - Radius;                                        *
		*                              Max = Center + Radius;                                      *
		************************************************************************/

		class AABBox {
			public:
				AABBox();
				AABBox( const AABBox& box );
				AABBox( const BasicType::SFVec3f& center, const BasicType::SFVec3f& radius );

				AABBox& operator=( const AABBox& box );

				BasicType::SFVec3f Max() const;
				BasicType::SFVec3f Min() const;

			protected:
			private:
				BasicType::SFVec3f m_Center;
				BasicType::SFVec3f m_Radius;
		};

		inline BasicType::SFVec3f AABBox::Max() const { return m_Center + m_Radius; }
		inline BasicType::SFVec3f AABBox::Min() const { return m_Center - m_Radius; }
	}
}


#endif	//	__AABBOX_H__